// module.exports = {
//   lintOnSave: false
// }
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = ['js', 'css'];

const path = require('path')
module.exports = {
  // 基本路径
  publicPath: './',
  assetsDir: 'static',
  // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  // webpack-dev-server 相关配置
  devServer: {
    host: '127.0.0.1',
    port: 8080,
    https: false,
    open: true,
    hotOnly: false,
    proxy: {
      // '/v1': {
      //   target: 'http://127.0.0.1:8888/api/private',
      //   changeOrigin: true,
      //   pathRewrite: {
      //     '^/v1': ''//这里理解成用‘/api’代替target里面的地址，后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add'，直接写‘/api/user/add’即可
      //   }
      // },
      '/api': {
        target: 'http://127.0.0.1:8888/api/private/v1', //'http://tms-multi-gate-fat.yspos-fat.com/',//设置你调用的接口域名和端口号 别忘了加http http://tms-multi-gate-fat.yspos-fat.com/ http://10.211.61.188:7001 http://10.213.32.58:42100 http://10.211.61.100:7081 http://tms-gate-fat.yspos-fat.com http://10.211.61.89:7001
        changeOrigin: true,
        pathRewrite: {
          '^/api': '' //这里理解成用‘/api’代替target里面的地址，后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add'，直接写‘/api/user/add’即可
        }
      }
    }, // 设置代理
    before: app => {}
  },
  configureWebpack: {
    resolve: {
      //配置路径别名
      alias: {
        '@': path.resolve(__dirname, 'src'),
        '@static': path.resolve(__dirname, 'static'),
        '@views': path.resolve(__dirname, './src/views'),
        '@compon': path.resolve(__dirname, './src/components')
        // 'static': 'pubilc/static',
      }
    }
  },
  // css相关配置
  css: {
    // 启用 CSS modules
    requireModuleExtension: true,
    // 是否使用css分离插件
    extract: true,
    // 开启 CSS source maps?
    sourceMap: false,
    // css预设器配置项
    loaderOptions: {
      less: {
        // 若使用 less-loader@5，请移除 lessOptions 这一级，直接配置选项。
        // lessOptions: {
        modifyVars: {
          // 或者可以通过 less 文件覆盖（文件路径为绝对路径）
          // hack: `true; @import "${path.resolve(__dirname, "src/common/css/theme.less")}";`,
          // hack: `true; @import "${path.resolve(__dirname, "src/common/css/reset.less")}";`
        }
        // },
      }
    }
  },
  // 是一个函数，会接收一个基于 webpack-chain 的 ChainableConfig 实例。允许对内部的 webpack 配置进行更细粒度的修改。
  chainWebpack: config => {
    config.resolve.alias.set('@', path.resolve('src')).set('@assets', path.resolve('src/assets'))
    // 开发环境就使用main-dev.js入口
    config.when(process.env.NODE_ENV == 'development', config => {
      config
        .entry('app')
        .clear()
        .add('./src/main.js')
      config.plugin('html').tap(args => {
        //添加参数isProd
        args[0].isProd = false
        return args
      })
    })
    // 生产环境就使用main-prod.js入口
    config.when(process.env.NODE_ENV == 'production', config => {
      config
        .entry('app')
        .clear()
        .add('./src/main_pro.js')
      // 加载静态资源，不打包
      config.set('externals', {
        vue: 'Vue',
        'vue-router': 'VueRouter',
        axios: 'axios',
        lodash: '_',
        echarts: 'echarts',
        nprogress: 'NProgress',
        'vue-quill-editor': 'VueQuillEditor'
      })
      config.plugin('html').tap(args => {
        //添加参数isProd
        args[0].isProd = true
        return args
      })
      // compression-webpack-plugin 打包压缩
      config.plugin('compressionPlugin')
      .use(new CompressionWebpackPlugin({
          filename: '[path].gz[query]',
          algorithm: 'gzip',
          test: productionGzipExtensions,
          threshold: 10240,
          minRatio: 0.8,
          deleteOriginalAssets: true
      }));
    })
  },
  // 第三方插件配置
  pluginOptions: {
    'style-resources-loader': {
      // vue add style-resources-loader
      preProcessor: 'less',
      patterns: [
        // path.resolve(__dirname, "src/common/css/style.less")
      ]
    }
  },
}
